package com.qianfeng.smsplatform.strategy.filters.impl;

//
//                            _ooOoo_  
//                           o8888888o  
//                           88" . "88  
//                           (| -_- |)  
//                            O\ = /O  
//                        ____/`---'\____  
//                      .   ' \\| |// `.  
//                       / \\||| : |||// \  
//                     / _||||| -:- |||||- \  
//                       | | \\\ - /// | |  
//                     | \_| ''\---/'' | |  
//                      \ .-\__ `-` ___/-. /  
//                   ___`. .' /--.--\ `. . __  
//                ."" '< `.___\_<|>_/___.' >'"".  
//               | | : `- \`.;`\ _ /`;.`/ - ` : | |  
//                 \ \ `-. \_ __\ /__ _/ .-` / /  
//         ======`-.____`-.___\_____/___.-`____.-'======  
//                            `=---='  
//  
//         .............................................  
//                  佛祖镇楼                  BUG辟易  
//          佛曰:  
//                  写字楼里写字间，写字间里程序员；  
//                  程序人员写程序，又拿程序换酒钱。  
//                  酒醒只在网上坐，酒醉还来网下眠；  
//                  酒醉酒醒日复日，网上网下年复年。  
//                  但愿老死电脑间，不愿鞠躬老板前；  
//                  奔驰宝马贵者趣，公交自行程序员。  
//                  别人笑我忒疯癫，我笑自己命太贱；  
//  


import com.qianfeng.smsplatform.common.constants.CacheConstants;
import com.qianfeng.smsplatform.common.constants.InterfaceExceptionDict;
import com.qianfeng.smsplatform.common.model.Standard_Submit;
import com.qianfeng.smsplatform.strategy.api.CacheService;
import com.qianfeng.smsplatform.strategy.filters.FilterChain;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * Created by Jackiechan on 2021/9/13/20:44
 *
 * @author Jackiechan
 * @version 1.0
 * @since 1.0
 */
//@Component
public class BlackFilterRedisCache implements FilterChain {

    private CacheService cacheService;

    @Autowired
    public void setCacheService(CacheService cacheService) {
        this.cacheService = cacheService;
    }

    @Override
    public boolean dealSms(Standard_Submit standard_submit) {
        System.err.println("黑名单的策略处理短信了");
        //黑名单,应该有一个集合 存放了所有的黑名单, 黑名单包括系统的黑名单,和客户的黑名单,但是不管是谁的黑名单,最终应该都判断手机号在不在里面就行了
        // 首先黑名单我们保存在什么地方,我们的策略服务应该是一个集群,其中的每一个机器都可以处理短信,所以我们的黑名单应该是在不同的机器之间共享的
//        所以黑名单我们优先考虑使用缓存来保存起来, 因为这个数据不怎么变化,而且大家通用,特别是系统的黑名单,是所有的客户共享的
        //我们经过分析,所有的黑名单可以使用set的方式保存到redis中,并且指定了某个key
        if (cacheService.isMember(CacheConstants.CACHE_BLACK_KEY,standard_submit.getDestMobile())) {
            //如果返回true代表在,返回false代表不在
            System.err.println("在黑名单中");
            standard_submit.setErrorCode(InterfaceExceptionDict.RETURN_STATUS_BLACK_ERROR);
            standard_submit.setReportState(2);
            standard_submit.setDescription("本号码属于黑名单");
            return false;
        }else {
            System.err.println("不在黑名单");
            return true;
        }

    }
}
